home *** CD-ROM | disk | FTP | other *** search
/ 3D World 5 (Spanish) / 3DWorld_05.iso / mac / Edición de vídeo / MovieSilencer folder / Read Me < prev   
Text File  |  1996-10-24  |  3KB  |  144 lines

  1. MovieSilencer is a very simple application which strips soundtracks from
  2. QuickTime movies.
  3.  
  4. Drop-launch a movie onto the application (or choose a movie from the open dialog).
  5. You will be prompted for a location for the resulting movie file.  You can't
  6. overwrite the original movie because it's still in use at this point.
  7.  
  8. Like I said, this is a very simple program with practically no user interface.
  9. If an error occurs, it just beeps at you (QuickTime isn't installed, not enough
  10. memory, etc.)
  11.  
  12. -- Scott Lindsey <wombat@claris.com>
  13.  
  14.  
  15. This program is freely distributable.  MovieSilencer is neither a product of nor is
  16. supported by Claris Corporation.  Here's the source:
  17.  
  18. // (No, this isn't very good example-ware.  It's just a quick hack.)
  19.  
  20. #include <MacHeaders>    // Think C.  If you're using MPW, you figure out what to put here.
  21. #include <Aliases.h>
  22. #include <Folders.h>
  23. #include <Movies.h>
  24. #include <ImageCompression.h>
  25.  
  26. #define SILENT    "Silent "
  27.  
  28. void DeleteSnd(FSSpec *);
  29.  
  30. void main(void)
  31. {
  32.     long    response;
  33.     short     Action, Count;
  34.     OSErr    err;
  35.     AppFile    File;
  36.     FSSpec    fs;
  37.     SFTypeList types = {'MooV'};
  38.  
  39.     if (Gestalt(gestaltQuickTime, &response))
  40.     {
  41.         SysBeep(5);
  42.         ExitToShell();
  43.     }
  44.  
  45.     MaxApplZone();    
  46.     InitGraf(&qd.thePort);
  47.     InitFonts();
  48.     InitWindows();
  49.     InitMenus();
  50.     TEInit();
  51.     InitDialogs(0L);
  52.     InitCursor();
  53.     EnterMovies();
  54.  
  55.     CountAppFiles(&Action, &Count);
  56.     if (Action == appPrint)
  57.         ExitToShell();
  58.  
  59.     if (Count)
  60.     {
  61.         GetAppFiles(Count, &File);
  62.         FSMakeFSSpec(File.vRefNum, 0L, File.fName, &fs);
  63.     }
  64.     else
  65.     {
  66.         StandardFileReply reply;
  67.  
  68.         StandardGetFilePreview(nil, 1, types, &reply);
  69.         if (!reply.sfGood)
  70.             ExitToShell();
  71.         fs = reply.sfFile;
  72.         Count = 1;
  73.     }
  74.  
  75.     for (;;)
  76.     {
  77.         DeleteSnd(&fs);
  78.         if (!--Count)
  79.             break;
  80.         GetAppFiles(Count, &File);
  81.         FSMakeFSSpec(File.vRefNum, 0L, File.fName, &fs);
  82.     }
  83.  
  84.     ExitToShell();
  85. }
  86.  
  87. void DeleteSnd(FSSpec *fs)
  88. {
  89.     short refNum, resID = 0, size;
  90.     Movie movie;
  91.     OSErr err;
  92.     StandardFileReply reply;
  93.     long x;
  94.     Track track;
  95.     OSType type, creator;
  96.     Str255 name;
  97.     
  98.     if (err = OpenMovieFile(fs, &refNum, fsRdWrPerm))
  99.         goto failed;
  100.     if (err = NewMovieFromFile(&movie, refNum, &resID, nil, newMovieActive, nil))
  101.         goto close;
  102.  
  103.     for (x = GetMovieTrackCount(movie); x; x--)
  104.     {
  105.         track = GetMovieIndTrack(movie, x);
  106.         GetMediaHandlerDescription(GetTrackMedia(track), &type, name, &creator);
  107.  
  108.         if (type == SoundMediaType && (err = DeleteTrackSegment(track, GetTrackOffset(track), GetTrackDuration(track))))
  109.             goto close;
  110.         if (type == SoundMediaType)
  111.             DisposeMovieTrack(track);
  112.  
  113.     }
  114.     CloseMovieFile(refNum);
  115.     
  116.     size = fs->name[0];
  117.     if (size + sizeof(SILENT) > sizeof(fs->name))
  118.         size = sizeof(fs->name) - sizeof(SILENT);
  119.         
  120.     BlockMove(fs->name + 1, fs->name + sizeof(SILENT), size);
  121.     BlockMove("Silent ", fs->name + 1, sizeof(SILENT) - 1);
  122.     fs->name[0] = size + sizeof(SILENT);
  123. tryAgain:
  124.     StandardPutFile("\pSave Movie as:", fs->name, &reply);
  125.     if (reply.sfGood)
  126.     {
  127.         if ((err = FSpDelete(&reply.sfFile)) && err != fnfErr)
  128.         {
  129.             SysBeep(5);
  130.             goto tryAgain;
  131.         }
  132.         FlattenMovie(movie, 0, &reply.sfFile, 'TVOD', smCurrentScript, createMovieFileDeleteCurFile, &resID, "\p");
  133.     }
  134.     DisposeMovie(movie);
  135.     return;
  136.  
  137. close:
  138.     CloseMovieFile(refNum);
  139.     
  140. failed:
  141.     SysBeep(5);
  142.     return;
  143. }
  144.